<?php
/*
 * Spac 템플릿 클래스
 * 작성자 : spacer.ha@gmail.com
 * 사용제한 : 
	- 이 클래스 라이브러리 사용은 무료이나, 원작자의 정보나 주석을 삭제할 수 없습니다.(자동생성되는 뷰캐시내 주석 포함)
	- 원작자가 배포한 그대로 수정되지 않은 소스는 자유롭게 배포가 가능합니다.
	- 사용자환경에 맞게 소스를 수정하여 사용은 가능하나 수정된 소스나, 수정된 소스가 포함된 프로그램을 타인에게 제공할 수 없습니다.
	- 영리/비영리/개인/기업 관계없이 모두 사용할 수 있습니다.
*/
class ViewTemplate {
	
	var $php_start;
	var $php_end; 
	var $short_tag_start;
	var $short_tag_end;
	
	function ViewTemplate() {}
	
	function apply($contents) {		
		$pattern[] 		= '/'.$this->short_tag_start.'\s*=(number_format|substr)(\()([a-zA-Z0-9_\[\]\'\"\.\(\)]+)(\))\s*;*(\s*)'.$this->short_tag_end.'/';
		$replacement[] 	= '<?php echo \\1\\2$this->\\3\\4;\\5?>';
		$pattern[] 		= '/'.$this->short_tag_start.'\s*=([a-zA-Z0-9_\[\]\'\"\.\(\)\/]+)\s*;*(\s*)'.$this->short_tag_end.'/';
		$replacement[] 	= '<?php echo $this->\\1;\\2?>';
		$pattern[] 		= '/'.$this->short_tag_start.'\s*([a-zA-Z0-9_\[\]\'\"\.\(\)\/]+)\s*'.$this->short_tag_end.'/';
		$replacement[] 	= '$this->\\1';
		$pattern[] 		= '/\$([a-zA-Z0-9_\->\[\]]+)\.([a-zA-Z0-9_]+)\.([a-zA-Z0-9_]+)/';
		$replacement[] 	= '$\\1->\\2->\\3';
		$pattern[] 		= '/\$([a-zA-Z0-9_\->\[\]]+)\.([a-zA-Z0-9_]+)/';
		$replacement[] 	= '$\\1->\\2';
		$pattern[] 		= '/<\?([^(php|}|=)])/i';
		$replacement[] 	= '<?php \\1';
		$pattern[] 		= '/('.$this->php_start.'\s*)(endif|endforeach)(;*)(\s*'.$this->php_end.')/i';
		$replacement[] 	= '\\1 \\2;\\4';
		$pattern[] 		= '/<!--\[(.*)\]-->/';
		$replacement[] 	= '<?php \\1 ?>';
		$pattern[] 		= '/<!--\[(\s*)/';
		$replacement[] 	= '<?php \\1';
		$pattern[] 		= '/(\s*)\]-->/';
		$replacement[] 	= '\\1 ?>';
		$pattern[] 		= '/'.$this->php_start.'(.*)'.$this->php_end.'/';
		$replacement[] 	= '<?php \\1 ?>';
		$pattern[] 		= '/'.$this->php_start.'(\s*)/';
		$replacement[] 	= '<?php \\1';
		$pattern[] 		= '/(\s*)'.$this->php_end.'/';
		$replacement[] 	= '\\1 ?>';
		$contents = preg_replace($pattern, $replacement ,$contents);
		return $contents;
	}	
}
?>